Termination w.r.t. Q of the following Term Rewriting System could not be shown:

Q restricted rewrite system:
The TRS R consists of the following rules:

app2(app2(apply, f_1), x) -> app2(f_1, x)
app2(id, x) -> x
app2(app2(app2(uncurry, f_2), x), y) -> app2(app2(f_2, x), y)
app2(app2(app2(swap, f_2), y), x) -> app2(app2(f_2, x), y)
app2(app2(app2(compose, g_1), f_1), x) -> app2(g_1, app2(f_1, x))
app2(app2(const, x), y) -> x
app2(listify, x) -> app2(app2(cons, x), nil)
app2(app2(app2(app2(fold, f_3), g_2), x), nil) -> x
app2(app2(app2(app2(fold, f_3), g_2), x), app2(app2(cons, z), t)) -> app2(app2(f_3, app2(g_2, z)), app2(app2(app2(app2(fold, f_3), g_2), x), t))
app2(sum, l) -> app2(app2(app2(app2(fold, add), id), 0), l)
app2(app2(uncurry, app2(app2(fold, cons), id)), nil) -> id
append -> app2(app2(compose, app2(app2(swap, fold), cons)), id)
reverse -> app2(app2(uncurry, app2(app2(fold, app2(swap, append)), listify)), nil)
length -> app2(app2(uncurry, app2(app2(fold, add), app2(cons, 1))), 0)

Q is empty.


QTRS
  ↳ DependencyPairsProof

Q restricted rewrite system:
The TRS R consists of the following rules:

app2(app2(apply, f_1), x) -> app2(f_1, x)
app2(id, x) -> x
app2(app2(app2(uncurry, f_2), x), y) -> app2(app2(f_2, x), y)
app2(app2(app2(swap, f_2), y), x) -> app2(app2(f_2, x), y)
app2(app2(app2(compose, g_1), f_1), x) -> app2(g_1, app2(f_1, x))
app2(app2(const, x), y) -> x
app2(listify, x) -> app2(app2(cons, x), nil)
app2(app2(app2(app2(fold, f_3), g_2), x), nil) -> x
app2(app2(app2(app2(fold, f_3), g_2), x), app2(app2(cons, z), t)) -> app2(app2(f_3, app2(g_2, z)), app2(app2(app2(app2(fold, f_3), g_2), x), t))
app2(sum, l) -> app2(app2(app2(app2(fold, add), id), 0), l)
app2(app2(uncurry, app2(app2(fold, cons), id)), nil) -> id
append -> app2(app2(compose, app2(app2(swap, fold), cons)), id)
reverse -> app2(app2(uncurry, app2(app2(fold, app2(swap, append)), listify)), nil)
length -> app2(app2(uncurry, app2(app2(fold, add), app2(cons, 1))), 0)

Q is empty.

Using Dependency Pairs [1,13] we result in the following initial DP problem:
Q DP problem:
The TRS P consists of the following rules:

APP2(app2(app2(uncurry, f_2), x), y) -> APP2(app2(f_2, x), y)
APP2(sum, l) -> APP2(fold, add)
APP2(app2(app2(app2(fold, f_3), g_2), x), app2(app2(cons, z), t)) -> APP2(app2(f_3, app2(g_2, z)), app2(app2(app2(app2(fold, f_3), g_2), x), t))
APP2(app2(app2(swap, f_2), y), x) -> APP2(f_2, x)
APPEND -> APP2(app2(swap, fold), cons)
LENGTH -> APP2(app2(uncurry, app2(app2(fold, add), app2(cons, 1))), 0)
APP2(app2(app2(app2(fold, f_3), g_2), x), app2(app2(cons, z), t)) -> APP2(g_2, z)
APPEND -> APP2(compose, app2(app2(swap, fold), cons))
APPEND -> APP2(swap, fold)
APPEND -> APP2(app2(compose, app2(app2(swap, fold), cons)), id)
APP2(app2(app2(app2(fold, f_3), g_2), x), app2(app2(cons, z), t)) -> APP2(f_3, app2(g_2, z))
APP2(app2(app2(compose, g_1), f_1), x) -> APP2(f_1, x)
APP2(app2(apply, f_1), x) -> APP2(f_1, x)
LENGTH -> APP2(app2(fold, add), app2(cons, 1))
APP2(sum, l) -> APP2(app2(app2(fold, add), id), 0)
REVERSE -> APP2(uncurry, app2(app2(fold, app2(swap, append)), listify))
LENGTH -> APP2(fold, add)
APP2(listify, x) -> APP2(app2(cons, x), nil)
APP2(app2(app2(app2(fold, f_3), g_2), x), app2(app2(cons, z), t)) -> APP2(app2(app2(app2(fold, f_3), g_2), x), t)
REVERSE -> APPEND
REVERSE -> APP2(swap, append)
REVERSE -> APP2(fold, app2(swap, append))
APP2(sum, l) -> APP2(app2(app2(app2(fold, add), id), 0), l)
LENGTH -> APP2(cons, 1)
APP2(app2(app2(compose, g_1), f_1), x) -> APP2(g_1, app2(f_1, x))
APP2(app2(app2(uncurry, f_2), x), y) -> APP2(f_2, x)
APP2(sum, l) -> APP2(app2(fold, add), id)
APP2(app2(app2(swap, f_2), y), x) -> APP2(app2(f_2, x), y)
LENGTH -> APP2(uncurry, app2(app2(fold, add), app2(cons, 1)))
APP2(listify, x) -> APP2(cons, x)
REVERSE -> APP2(app2(uncurry, app2(app2(fold, app2(swap, append)), listify)), nil)
REVERSE -> APP2(app2(fold, app2(swap, append)), listify)

The TRS R consists of the following rules:

app2(app2(apply, f_1), x) -> app2(f_1, x)
app2(id, x) -> x
app2(app2(app2(uncurry, f_2), x), y) -> app2(app2(f_2, x), y)
app2(app2(app2(swap, f_2), y), x) -> app2(app2(f_2, x), y)
app2(app2(app2(compose, g_1), f_1), x) -> app2(g_1, app2(f_1, x))
app2(app2(const, x), y) -> x
app2(listify, x) -> app2(app2(cons, x), nil)
app2(app2(app2(app2(fold, f_3), g_2), x), nil) -> x
app2(app2(app2(app2(fold, f_3), g_2), x), app2(app2(cons, z), t)) -> app2(app2(f_3, app2(g_2, z)), app2(app2(app2(app2(fold, f_3), g_2), x), t))
app2(sum, l) -> app2(app2(app2(app2(fold, add), id), 0), l)
app2(app2(uncurry, app2(app2(fold, cons), id)), nil) -> id
append -> app2(app2(compose, app2(app2(swap, fold), cons)), id)
reverse -> app2(app2(uncurry, app2(app2(fold, app2(swap, append)), listify)), nil)
length -> app2(app2(uncurry, app2(app2(fold, add), app2(cons, 1))), 0)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

↳ QTRS
  ↳ DependencyPairsProof
QDP
      ↳ DependencyGraphProof

Q DP problem:
The TRS P consists of the following rules:

APP2(app2(app2(uncurry, f_2), x), y) -> APP2(app2(f_2, x), y)
APP2(sum, l) -> APP2(fold, add)
APP2(app2(app2(app2(fold, f_3), g_2), x), app2(app2(cons, z), t)) -> APP2(app2(f_3, app2(g_2, z)), app2(app2(app2(app2(fold, f_3), g_2), x), t))
APP2(app2(app2(swap, f_2), y), x) -> APP2(f_2, x)
APPEND -> APP2(app2(swap, fold), cons)
LENGTH -> APP2(app2(uncurry, app2(app2(fold, add), app2(cons, 1))), 0)
APP2(app2(app2(app2(fold, f_3), g_2), x), app2(app2(cons, z), t)) -> APP2(g_2, z)
APPEND -> APP2(compose, app2(app2(swap, fold), cons))
APPEND -> APP2(swap, fold)
APPEND -> APP2(app2(compose, app2(app2(swap, fold), cons)), id)
APP2(app2(app2(app2(fold, f_3), g_2), x), app2(app2(cons, z), t)) -> APP2(f_3, app2(g_2, z))
APP2(app2(app2(compose, g_1), f_1), x) -> APP2(f_1, x)
APP2(app2(apply, f_1), x) -> APP2(f_1, x)
LENGTH -> APP2(app2(fold, add), app2(cons, 1))
APP2(sum, l) -> APP2(app2(app2(fold, add), id), 0)
REVERSE -> APP2(uncurry, app2(app2(fold, app2(swap, append)), listify))
LENGTH -> APP2(fold, add)
APP2(listify, x) -> APP2(app2(cons, x), nil)
APP2(app2(app2(app2(fold, f_3), g_2), x), app2(app2(cons, z), t)) -> APP2(app2(app2(app2(fold, f_3), g_2), x), t)
REVERSE -> APPEND
REVERSE -> APP2(swap, append)
REVERSE -> APP2(fold, app2(swap, append))
APP2(sum, l) -> APP2(app2(app2(app2(fold, add), id), 0), l)
LENGTH -> APP2(cons, 1)
APP2(app2(app2(compose, g_1), f_1), x) -> APP2(g_1, app2(f_1, x))
APP2(app2(app2(uncurry, f_2), x), y) -> APP2(f_2, x)
APP2(sum, l) -> APP2(app2(fold, add), id)
APP2(app2(app2(swap, f_2), y), x) -> APP2(app2(f_2, x), y)
LENGTH -> APP2(uncurry, app2(app2(fold, add), app2(cons, 1)))
APP2(listify, x) -> APP2(cons, x)
REVERSE -> APP2(app2(uncurry, app2(app2(fold, app2(swap, append)), listify)), nil)
REVERSE -> APP2(app2(fold, app2(swap, append)), listify)

The TRS R consists of the following rules:

app2(app2(apply, f_1), x) -> app2(f_1, x)
app2(id, x) -> x
app2(app2(app2(uncurry, f_2), x), y) -> app2(app2(f_2, x), y)
app2(app2(app2(swap, f_2), y), x) -> app2(app2(f_2, x), y)
app2(app2(app2(compose, g_1), f_1), x) -> app2(g_1, app2(f_1, x))
app2(app2(const, x), y) -> x
app2(listify, x) -> app2(app2(cons, x), nil)
app2(app2(app2(app2(fold, f_3), g_2), x), nil) -> x
app2(app2(app2(app2(fold, f_3), g_2), x), app2(app2(cons, z), t)) -> app2(app2(f_3, app2(g_2, z)), app2(app2(app2(app2(fold, f_3), g_2), x), t))
app2(sum, l) -> app2(app2(app2(app2(fold, add), id), 0), l)
app2(app2(uncurry, app2(app2(fold, cons), id)), nil) -> id
append -> app2(app2(compose, app2(app2(swap, fold), cons)), id)
reverse -> app2(app2(uncurry, app2(app2(fold, app2(swap, append)), listify)), nil)
length -> app2(app2(uncurry, app2(app2(fold, add), app2(cons, 1))), 0)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.
The approximation of the Dependency Graph [13,14,18] contains 1 SCC with 20 less nodes.

↳ QTRS
  ↳ DependencyPairsProof
    ↳ QDP
      ↳ DependencyGraphProof
QDP

Q DP problem:
The TRS P consists of the following rules:

APP2(app2(app2(uncurry, f_2), x), y) -> APP2(app2(f_2, x), y)
APP2(app2(app2(compose, g_1), f_1), x) -> APP2(g_1, app2(f_1, x))
APP2(app2(app2(uncurry, f_2), x), y) -> APP2(f_2, x)
APP2(app2(app2(app2(fold, f_3), g_2), x), app2(app2(cons, z), t)) -> APP2(app2(f_3, app2(g_2, z)), app2(app2(app2(app2(fold, f_3), g_2), x), t))
APP2(app2(app2(app2(fold, f_3), g_2), x), app2(app2(cons, z), t)) -> APP2(app2(app2(app2(fold, f_3), g_2), x), t)
APP2(app2(app2(swap, f_2), y), x) -> APP2(f_2, x)
APP2(app2(app2(app2(fold, f_3), g_2), x), app2(app2(cons, z), t)) -> APP2(f_3, app2(g_2, z))
APP2(app2(app2(compose, g_1), f_1), x) -> APP2(f_1, x)
APP2(app2(app2(swap, f_2), y), x) -> APP2(app2(f_2, x), y)
APP2(app2(apply, f_1), x) -> APP2(f_1, x)
APP2(sum, l) -> APP2(app2(app2(app2(fold, add), id), 0), l)
APP2(app2(app2(app2(fold, f_3), g_2), x), app2(app2(cons, z), t)) -> APP2(g_2, z)

The TRS R consists of the following rules:

app2(app2(apply, f_1), x) -> app2(f_1, x)
app2(id, x) -> x
app2(app2(app2(uncurry, f_2), x), y) -> app2(app2(f_2, x), y)
app2(app2(app2(swap, f_2), y), x) -> app2(app2(f_2, x), y)
app2(app2(app2(compose, g_1), f_1), x) -> app2(g_1, app2(f_1, x))
app2(app2(const, x), y) -> x
app2(listify, x) -> app2(app2(cons, x), nil)
app2(app2(app2(app2(fold, f_3), g_2), x), nil) -> x
app2(app2(app2(app2(fold, f_3), g_2), x), app2(app2(cons, z), t)) -> app2(app2(f_3, app2(g_2, z)), app2(app2(app2(app2(fold, f_3), g_2), x), t))
app2(sum, l) -> app2(app2(app2(app2(fold, add), id), 0), l)
app2(app2(uncurry, app2(app2(fold, cons), id)), nil) -> id
append -> app2(app2(compose, app2(app2(swap, fold), cons)), id)
reverse -> app2(app2(uncurry, app2(app2(fold, app2(swap, append)), listify)), nil)
length -> app2(app2(uncurry, app2(app2(fold, add), app2(cons, 1))), 0)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.